<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
  <title>White Paper - ReactOS Website</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Pragma" content="no-cache" />
  <meta name="Content-language" content="en" />
  <meta name="Publisher" content="ReactOS Web Team" />
  <meta name="Copyright" content="ReactOS Foundation" />
  <meta name="Generator" content="RosCMS" />
  <meta name="Keywords" content="ReactOS, ros, operating system, OS, OSS, compatible, react os, clone, free, open source, alternative, open source os, GNU GPL, GPL, LGPL, forum, download, information, wiki, support database, support, faq, compatibility database, compatibility" />
  <meta name="Description" content="ReactOS&reg; is a free, modern operating system based on the design of Windows&reg; XP/2003. Written completely from scratch, it aims to follow the Windows&reg; architecture designed by Microsoft&reg; from the hardware level right through to the application level." />
  <meta name="Page-topic" content="operating system, computer, software, downloads, open source, alternative" />
  <meta name="Audience" content="all" />
  <meta name="Page-type" content="Operating System/Information/News/Open Source" />
  <meta name="Robots" content="index,follow" />
  <link rel="SHORTCUT ICON" href="../allnew/favicon.ico" />
  <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="newsfeed_rss.xml" />
  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="newsfeed_atom.xml" />
  <link href="../css/style.css" type="text/css" rel="stylesheet" />
  <!--[if IE]><link href="../css/ie.css" type="text/css" rel="stylesheet" /><![!endif] -->

  <link rel="stylesheet" href="../css/litebox.css" type="text/css" media="screen" />
  <script type="text/javascript" src="../js/litebox.js"></script>

  
</head>
<body onload="initLightbox()">
<div id="main">
<div id="header">
  <div id="headercontent">
    <a href="index.html" id="back" class="clearfix">
      <img id="logo" src="../img/logo.png" alt="ReactOS logo" />
      <img id="reactos" src="../img/ReactOS.png" alt="ReactOS" />
    </a>
    <div id="headerContext">
      <div id="lang">
        <span>English</span>
<ul>
<li><a href="../?page=dev_whitepaper&amp;lang=bg">Bulgarian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ca">Català</a></li><li><a href="../?page=dev_whitepaper&amp;lang=cz">Czech</a></li><li><a href="../?page=dev_whitepaper&amp;lang=da">Danish</a></li><li><a href="../?page=dev_whitepaper&amp;lang=de">Deutsch</a></li><li><a href="../?page=dev_whitepaper&amp;lang=el">Ελληνικά</a></li><li><a href="../?page=dev_whitepaper&amp;lang=en">English</a></li><li><a href="../?page=dev_whitepaper&amp;lang=es">Español</a></li><li><a href="../?page=dev_whitepaper&amp;lang=fr">Français</a></li><li><a href="../?page=dev_whitepaper&amp;lang=he">Hebrew</a></li><li><a href="../?page=dev_whitepaper&amp;lang=hu">Hungarian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=id">Indonesian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=it">Italiano</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ja">日本語</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ko">Korean</a></li><li><a href="../?page=dev_whitepaper&amp;lang=lt">Lithuanian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=nl">Dutch</a></li><li><a href="../?page=dev_whitepaper&amp;lang=no">Norsk</a></li><li><a href="../?page=dev_whitepaper&amp;lang=pl">Polski</a></li><li><a href="../?page=dev_whitepaper&amp;lang=pt">Português</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ro">Romanian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ru">Русский</a></li><li><a href="../?page=dev_whitepaper&amp;lang=sk">Slovak</a></li><li><a href="../?page=dev_whitepaper&amp;lang=sv">Swedish</a></li><li><a href="../?page=dev_whitepaper&amp;lang=tw">Chinese (traditional)</a></li><li><a href="../?page=dev_whitepaper&amp;lang=uk">Ukrainian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=vi">Vietnamese</a></li><li><a href="../?page=dev_whitepaper&amp;lang=zh">中文</a></li></ul>
      </div>
      <div id="advertise">
        <a href="newbies.html">New to ReactOS?</a>
        <a href="[#dev_start]">Get involved!</a>
      </div>
    </div>
  </div>
</div>
<div id="Navigation">
  <div id="NavigationContent">
  <ul>
    <li>
      <a href="about.html">Info</a>
      <ul>
        <li><a href="news.html">News</a></li>
        <li><a href="about.html">About&nbsp;ReactOS</a></li>
        <li><a href="about_whyreactos.html">Why&nbsp;ReactOS</a></li>
        <li><a href="download.html">Download</a></li>
        <li><a href="about_userfaq.html">FAQ</a></li>
        <li><a href="sitemap.html">Sitemap</a></li>
      </ul>
    </li>
    <li>
      <a href="community.html">Community</a>
      <ul>
        <li><a href="news.html">Forum</a></li>
        <li><a href="[#cont_url_forum]">Wiki</a></li>
        <li><a href="community_mailinglists.html">Mailing&nbsp;List</a></li>
        <li><a href="community_irc.html">Chat</a></li>
        <li><a href="[#cont_url_peoplemap]">Peoplemap</a></li>
      </ul>
    </li>
    <li>
      <a href="dev.html">Development</a>
      <ul>
        <li><a href="dev_start.html">How&nbsp;to&nbsp;take&nbsp;part</a></li>
        <li><a href="[#cont_url_wiki]Testing_Introduction">Testing</a></li>
        <li><a href="[#cont_url_wiki]Building_ReactOS">Compile&nbsp;ReactOS</a></li>
        <li><a href="[#cont_url_wiki]Debugging">Debugging</a></li>
        <li><a href="[#cont_url_doxygen]">Doxygen</a></li>
        <li><a href="dev_faq.html">Developer&nbsp;FAQ</a></li>
        <li><a href="dev_svn.html">Sourcecode&nbsp;access</a></li>
      </ul>
    </li>
    <li id="contactus"><a href="contact.html">Contact Us</a></li>

    <li id="search">
      <form method="get" action="http://www.google.com/search">
        <fieldset>
        <label for="q" accesskey="s"></label>
        <input type="text" id="q" name="q" tabindex="0" size="13" maxlength="80" title="search" />
        <input type="hidden" name="sitesearch" value="http://www.reactos.org" />
        </fieldset>
      </form>
    </li>
  </ul>
  </div>
</div>
<table style="border:0" width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
  <td style="width:147px" id="leftNav"> 
  <div class="navTitle">Navigation</div>
    <ol>
      <li><a href="index.html">Home</a></li>
      <li><a href="about.html">Info</a></li>
      <li><a href="community.html">Community</a></li>
      <li><a href="dev.html">Development</a></li>
      <li><a href="../roscms/?page=user">myReactOS</a></li>
    </ol>
  <p></p>


<div class="navTitle">Development</div>
  <ol>
    <li><a href="dev.html">Overview</a></li>
    <li><a href="dev_start.html">How to take part</a></li>
    <li><a href="dev_whitepaper.html">Whitepaper</a></li>
    <li><a href="dev_compile.html">Compiling ReactOS</a></li>
    <li><a href="dev_faq.html">Developer FAQ</a></li>
    <li><a href="dev_legalreview.html">Intellectual Property</a></li>
    <li><a href="dev_svn.html">SVN Server</a></li>
    <li><a href="../bugzilla/">Bugzilla</a></li>
    <li><a href="/generated/doxygen">Doxygen</a></li>
    <li><a href="../roscms/?page=home">RosCMS</a></li>
    <li><a href="../roscms/?page=webstatus">Website Status</a></li>
    <li><a href="dev_homepage.html">Translate Website</a></li>
    <li><a href="http://cia.vc/stats/project/ReactOS" target="_blank">ReactOS CIA</a></li>
  </ol>
<p></p>

      <div id="ajaxsearchbar2" class="navTitle" style="display: none">Search</div>
      <ol>
        <li> 
			<div id="ajaxsearchbar" align="center"  style="display: none">
				<div align="center">
				<form method="get" action="http://www.google.com/search" style="padding:0;margin:0">
					<label for="q" accesskey="s"></label><input name="q" type="text" id="q" class="searchInput" tabindex="0" onkeyup="loadItemList(this.value,'rosweb','roscms_en','ajaxloadbar','sresultbar')" size="13" maxlength="80" style="font-family: Verdana; font-size: x-small; font-style: normal;" /><input name="domains" value="http://www.reactos.org" type="hidden" /><input name="sitesearch" value="http://www.reactos.org" type="hidden" />
					<input name="btnG" value="Go" type="submit" class="button" />
				</form>
				</div>
				<div id="sresultbar" style="display: none" align="left"></div>
				
			<img id="ajaxloadbar" src="../support/images/ajax_loading.gif" style="display: none"></div>
		</li>
      </ol>
	  <p></p>
 <div id="googlesearchbar" class="navTitle">Search</div>   
 <div id="googlesearchbar2" class="navBox"><form method="get" action="http://www.google.com/search" style="padding:0;margin:0">
  <div style="text-align:center;">
   <input name="q" value=""  size="12" maxlength="80" class="searchInput" type="text" tabindex="0"  /><input name="domains" value="http://www.reactos.org" type="hidden" /><input name="sitesearch" value="http://www.reactos.org" type="hidden" />
   <input name="btnG" value="Go" type="submit" class="button" />

  </div></form>
 </div>
<p></p>
<script type="text/javascript" language="javascript">
<!--
	document.getElementById('ajaxsearchbar').style.display = "block";
	document.getElementById('ajaxsearchbar2').style.display = "block";
	document.getElementById('googlesearchbar').style.display = "none";
	document.getElementById('googlesearchbar2').style.display = "none";
-->
</script>
<div class="navTitle">Language</div>  
	<div class="navBox"> 
		<span>English</span>
<ul>
<li><a href="../?page=dev_whitepaper&amp;lang=bg">Bulgarian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ca">Català</a></li><li><a href="../?page=dev_whitepaper&amp;lang=cz">Czech</a></li><li><a href="../?page=dev_whitepaper&amp;lang=da">Danish</a></li><li><a href="../?page=dev_whitepaper&amp;lang=de">Deutsch</a></li><li><a href="../?page=dev_whitepaper&amp;lang=el">Ελληνικά</a></li><li><a href="../?page=dev_whitepaper&amp;lang=en">English</a></li><li><a href="../?page=dev_whitepaper&amp;lang=es">Español</a></li><li><a href="../?page=dev_whitepaper&amp;lang=fr">Français</a></li><li><a href="../?page=dev_whitepaper&amp;lang=he">Hebrew</a></li><li><a href="../?page=dev_whitepaper&amp;lang=hu">Hungarian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=id">Indonesian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=it">Italiano</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ja">日本語</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ko">Korean</a></li><li><a href="../?page=dev_whitepaper&amp;lang=lt">Lithuanian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=nl">Dutch</a></li><li><a href="../?page=dev_whitepaper&amp;lang=no">Norsk</a></li><li><a href="../?page=dev_whitepaper&amp;lang=pl">Polski</a></li><li><a href="../?page=dev_whitepaper&amp;lang=pt">Português</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ro">Romanian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=ru">Русский</a></li><li><a href="../?page=dev_whitepaper&amp;lang=sk">Slovak</a></li><li><a href="../?page=dev_whitepaper&amp;lang=sv">Swedish</a></li><li><a href="../?page=dev_whitepaper&amp;lang=tw">Chinese (traditional)</a></li><li><a href="../?page=dev_whitepaper&amp;lang=uk">Ukrainian</a></li><li><a href="../?page=dev_whitepaper&amp;lang=vi">Vietnamese</a></li><li><a href="../?page=dev_whitepaper&amp;lang=zh">中文</a></li></ul>
	</div>
<p></p>
<!-- Google AdSense - start -->
<script type="text/javascript"><!--
google_ad_client = "pub-8424466656027272";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text";
google_ad_channel ="4696317145";
google_color_border = "5984C3";
google_color_bg = "EEEEEE";
google_color_link = "000000";
google_color_text = "000000";
google_color_url = "006090";
google_ui_features = "rc:0";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- Google AdSense - end -->

      </td>

    <td id="content"><div class="contentSmall">	

<h1><a href="dev.html">ReactOS Development</a> &gt; Whitepaper</h1>
<h2>White Paper</h2>
<h3>Introduction</h3>
<p>
The ReactOS architecture is based on that of Microsoft Windows 2003 Server. The ReactOS architecture, like NT, is monolithic but able to load modules. At the lowest layer is the Executive. The executive includes everything that runs in kernel mode. Above the executive are the Protected Subsystems. These subsystems provide implementations of different Operating System personalities. 
</p>
<h3>The Executive</h3>
<p>
The Executive is all the code that runs in kernel mode. The executive can roughly be broken up into the following components: Hardware Abstraction Layer (HAL), Device Drivers, The Kernel, System Services (including the Win32k subsystem) These components all run in kernel mode. The HAL, Kernel, System Services and Device Drivers are collectively referred to as the Executive. 
</p>
<h3>Hardware Abstraction Layer</h3>
<p>
The HAL makes it possible for the x86 ReactOS kernel and HAL to run on different x86 motherboards. The HAL abstracts motherboard specific code from the kernel, so that different motherboards do not require changes in the kernel. Examples for different hardware designs are the standard PC, the Japanese NEC PC98 or x86 SGI workstations. 
</p>
<h3>Device Drivers</h3>
<p>
Device drivers are hardware specific extensions to the ReactOS Executive. They allow the Operating System to interact with certain devices and visa versa. ReactOS currently aims to implement the NT driver mode, of which the Windows Driver Model (WDM) is a subset of. WDM is a set of rules for writing portable Windows drivers.  The Windows Driver Foundation (WDF) introduced in Windows Vista is also a consideration for future development. 
</p>
<h3>Communication</h3>
<p>
Device drivers use packets to communicate with the kernel and with other drivers. Packets are sent via the I/O Manager (System Service) and make use of IRPs (I/O Request Packets). 
</p>
<h3>Kernel</h3>
<p>
The kernel design is based on that of Microsoft Windows 2003 Server. It implements kernel mode Asynchronous Procedure Calls (APCs), Deferred Procedure Calls (DPCs), processes, threading, mutexes, semaphores, spinlocks, timing code, and more. 
</p>
<h3>System Services</h3>
<p>
System services include: IO Manager, Configuration Manager, Plug and Play, Power Manager, Memory Manager, Executive Support, Object Manager, security reference monitor, process structure, local procedure call, Win32 Subsystem. 
</p>
<h3>Protected Subsystems</h3>
<p>
The Protected Subsystems allow different Operating System personalities to run on top of the ReactOS Executive. The initial target for ReactOS was the Win32k subsystem -- however, the Win32k subsystem runs in kernel mode as part of the Executive and is not featured here. For other graphical subsystems, there exists an Interface for Subsystems via the Win32k Subsystem. The Windows NT graphics device drivers are tightly integrated in design with the Win32k subsystem. Due to this it is impractical for a user mode subsystem to interact directly with the graphics drivers. For this reason, a subsystem should make use of the kernel mode Win32k subsystem for a graphics interface. Such a subsystem need not depend on the Win32k Window Manager, but can instead just use the graphics primitives provided by the Win32k subsystem. 
</p>
<h3>Native API Architecture</h3>
<p>
The Native API Architecture calls for user mode code to call kernel mode services in a standard manner. It is the equivalent to the System Call Interface used by most UNIXes. Microsoft Windows NT/2000/XP does not document the Native API Architecture for programmers, they must use the Win32 APIs instead. Since ReactOS is Open Source, our Native API Architecture is open to the application programmer. The Native API Architecture is implemented in NTDLL.dll. Aside from containing Native API user mode entry points, NTDLL.dll also contains process startup and module loading code. These entry points call KiSystemService in kernel mode, which looks up the kernel mode service in a system table - KiSystemServiceTable.
</p>
<h3>Compatibility Targets</h3>
<p>
The original target for ReactOS, with regards to driver and application compatibility, was Microsoft Windows NT 4.0. Since then, Microsoft Windows 2000, XP, 2003 Server, and Vista have been released. All these are descendants of Windows NT. As such we can gradually shift our compatibility target without worrying about the architecture changing too much. In fact, internally, Windows 2000 reports version information as Windows 5.0, XP as Windows 5.1, 2003 Server as Windows 5.2, and Vista as Windows 6.0. The ReactOS team currently targets Windows 2003 Server as the official compatibility target.  Of the current releases, 2003 Server has proven one of the most robust. This does not mean that features present in later versions of Windows NT based operating systems will not be implemented in ReactOS and work is continually done to implement newer APIs. 
</p>



</div>
</body>
</html><!-- Generated with RosCMS 4 (4.0.0 beta) - 2009-11-06 12:36:39 -->